Cumulative Plot Sales

Column

Plots Sold Across the World

Row

Plot Locations

Plots Sold in the US

World Plots

Column

Cumulative Plot Sales

country sold
United States 2438
United Kingdom 213
France 148
Japan 67
Netherlands 63
Italy 62
China 59
Canada 51
United Arab Emirates 51
Australia 47
Spain 44
Germany 43
Egypt 38
India 34
Brazil 32
Hong Kong 31
Uzbekistan 31
Russia 27
Israel 23
Singapore 23
Vatican City 22
Mexico 20
Monaco 18
Belgium 17
Panama 15
Saudi Arabia 14
South Korea 14
Austria 13
Peru 13
Switzerland 13
Turkey 13
Ukraine 12
Greece 11
Thailand 9
Czech Republic 6
Portugal 6
Poland 5
coordinates 4
Iraq 4
Jordan 4
Malaysia 4
NA 4
Argentina 3
Finland 3
Georgia 3
Iceland 3
Indonesia 3
Kazakhstan 3
Saint Lucia 3
South Africa 3
Taiwan 3
Venezuela 3
Armenia 2
Azerbaijan 2
Bahamas 2
Cambodia 2
Colombia 2
Croatia 2
Cuba 2
French Polynesia 2
Ireland 2
Nepal 2
Ontario 2
Qatar 2
Bolivia 1
Bulgaria 1
Chad 1
Chile 1
Costa Rica 1
Cyprus 1
Dominican Republic 1
Estonia 1
Guatemala 1
Jamaica 1
Jerusalem District 1
Luxembourg 1
Malta 1
Montenegro 1
Norway 1
Palestinian Territories 1
Saint Barthelemy 1
Senegal 1
Serbia 1
Sri Lanka 1
Vietnam 1

Column

Day

Week

Month

Year

Total

US Plots

Column

Cumulative US Plot Sales

state sold
Texas 684
New York 391
California 343
Florida 206
Nevada 189
District of Columbia 57
Tennessee 50
Louisiana 49
Massachusetts 42
Washington 36
Pennsylvania 35
Georgia 34
Illinois 34
Minnesota 31
Ohio 29
New Jersey 22
Indiana 20
Arizona 18
Colorado 18
Michigan 17
Missouri 14
Alabama 12
Arkansas 12
North Carolina 11
Oklahoma 11
Hawaii 10
Oregon 10
Wisconsin 10
Utah 9
Virginia 8
Maryland 5
Wyoming 5
Kentucky 4
South Dakota 3
Connecticut 2
Maine 2
New Mexico 2
Kansas 1
Mississippi 1
Nebraska 1

Column

Day

Week

Month

Year

Total

---
title: "SuperWorld Plot Sales"
output: 
  flexdashboard::flex_dashboard:
    social: menu
    source_code: embed
    theme: yeti
---

Cumulative Plot Sales
=====================================

Inputs {.sidebar}
-------------------------------------

```{r setup, include=FALSE, warning=FALSE, message=FALSE}
library(leaflet)
library(leaflet.extras)
library(sf)
library(tidyverse)
library(rnaturalearth)
library(rnaturalearthdata)
library(plotly)
library(usmap)
library(lubridate)

plots_sold = read_csv("C:/Users/rebec/SuperWorld_Plot_Recommendation/data/plots_sold.csv")[-1]
plots_sold$code = toupper(plots_sold$code)

us_plots = plots_sold[which(plots_sold$code == "US"),]
us_address = us_plots$address

state = c()
for (i in 1:length(us_address)){
  add = tail(unlist(str_split(us_address[i], pattern = ", ")), 2)[1]
  add = gsub(' [[:digit:]]+', '', add)
  state = c(state, add)
}

us_plots = cbind(us_plots, state) 

state_data = data.frame(state) %>%
  group_by(state) %>%
  summarise(sold = n())

```

*Total Plot Sales:*

```{r}
nrow(plots_sold)
```


*Top 10 Countries:* ```{r} plots_sold %>% group_by(country) %>% summarise(`plots sold` = n()) %>% arrange(-`plots sold`) %>% head(10) %>% knitr::kable() ```
*Top 10 US States:* ```{r} state_data %>% summarise(state, `plots sold` = sold) %>% arrange(-`plots sold`) %>% head(10) %>% knitr::kable() ``` Column {data-width=800} ------------------------------------- ### Plots Sold Across the World ```{r warning=FALSE, message=FALSE} world = ne_countries(scale = "medium", returnclass = "sf") df = st_sf(merge(plots_sold, world, by.x = "code", by.y = "iso_a2", all.x = FALSE, all.y = TRUE, returnclass = "sf")) df_plot = df %>% group_by(country, code) %>% summarise(sold = n()) %>% mutate(sold = ifelse(is.na(country), 0, sold)) %>% ggplot() + geom_sf(aes(fill = sold))+ scale_fill_gradient(trans = "log") + geom_sf_text(aes(label = code), size = 1) + theme(axis.title.x=element_blank(), axis.title.y=element_blank(), legend.title = element_text("Plots Sold")) + labs(caption = "Sold values are in log scale") + guides(fill = guide_colourbar(barwidth = 0.5, barheight = 10)) # df2 = df %>% # group_by(country, code) %>% # summarise(sold = n()) %>% # mutate(sold = ifelse(is.na(country), 0, sold)) # plot(df2["sold"], logz = TRUE, main = NULL, key.pos = 4) ggplotly(df_plot) %>% layout(annotations = list(x = 1, y = -0.1, text = "Sold values are in log scale", showarrow = F, xref='paper', yref='paper', xanchor='right', yanchor='auto', xshift=-10, yshift=80, font=list(size=15)), xaxis = list(autorange = TRUE), yaxis = list(autorange = TRUE) ) ``` Row ------------------------------------- ### Plot Locations ```{r} leaflet(plots_sold) %>% addTiles() %>% addCircles(lng = ~lon, lat = ~lat) %>% setView(lat = 37.0902, lng = -95.7129, zoom = 4) ``` ### Plots Sold in the US ```{r} us = plot_usmap(data = state_data, values = "sold", regions = "states") + theme(legend.position = "right") + scale_fill_continuous(name = "Plots Sold") ggplotly(us) ``` World Plots ===================================== Column {data-width=200} ------------------------------------- ### Cumulative Plot Sales ```{r} plots_sold %>% group_by(country) %>% summarize(sold = n()) %>% arrange(-sold) %>% knitr::kable() ``` Column {.tabset} ------------------------------------- ### Day ```{r} plots_today = plots_sold %>% mutate(days = interval(date, today()) %/% days(1)) %>% filter(days < 1) df_today = st_sf(merge(plots_today, world, by.x = "code", by.y = "iso_a2", all.x = FALSE, all.y = TRUE, returnclass = "sf")) plot = df_today %>% group_by(country, code) %>% summarise(sold = n()) %>% mutate(sold = ifelse(is.na(country), 0, sold)) %>% ggplot() + geom_sf(aes(fill = sold))+ scale_fill_gradientn(colors = colorspace::heat_hcl(12, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) + geom_sf_text(aes(label = code), size = 1) + theme(axis.title.x=element_blank(), axis.title.y=element_blank(), legend.title = element_text("Plots Sold")) + labs(caption = "Sold values are in log scale") + guides(fill = guide_colourbar(barwidth = 0.5, barheight = 10)) ggplotly(plot) %>% layout(xaxis = list(autorange = TRUE), yaxis = list(autorange = TRUE)) ``` ### Week ```{r} plots_week = plots_sold %>% mutate(days = interval(date, today()) %/% days(1)) %>% filter(days < 7) df_week = st_sf(merge(plots_week, world, by.x = "code", by.y = "iso_a2", all.x = FALSE, all.y = TRUE, returnclass = "sf")) plot = df_week %>% group_by(country, code) %>% summarise(sold = n()) %>% mutate(sold = ifelse(is.na(country), -Inf, sold)) %>% ggplot() + geom_sf(aes(fill = sold))+ scale_fill_gradientn(trans = "log", colors = colorspace::heat_hcl(12, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) + geom_sf_text(aes(label = code), size = 1) + theme(axis.title.x=element_blank(), axis.title.y=element_blank(), legend.title = element_text("Plots Sold")) + labs(caption = "Sold values are in log scale") + guides(fill = guide_colourbar(barwidth = 0.5, barheight = 10)) ggplotly(plot) %>% layout(annotations = list(x = 1, y = -0.1, text = "Sold values are in log scale", showarrow = F, xref='paper', yref='paper', xanchor='right', yanchor='auto', xshift=-10, yshift=80, font=list(size=15)), xaxis = list(autorange = TRUE), yaxis = list(autorange = TRUE) ) ``` ### Month ```{r} plots_month = plots_sold %>% mutate(days = interval(date, today()) %/% days(1)) %>% filter(days < 30) df_month = st_sf(merge(plots_month, world, by.x = "code", by.y = "iso_a2", all.x = FALSE, all.y = TRUE, returnclass = "sf")) plot = df_month %>% group_by(country, code) %>% summarise(sold = n()) %>% mutate(sold = ifelse(is.na(country), -Inf, sold)) %>% ggplot() + geom_sf(aes(fill = sold))+ scale_fill_gradientn(trans = "log", colors = colorspace::heat_hcl(12, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) + geom_sf_text(aes(label = code), size = 1) + theme(axis.title.x=element_blank(), axis.title.y=element_blank(), legend.title = element_text("Plots Sold")) + labs(caption = "Sold values are in log scale") + guides(fill = guide_colourbar(barwidth = 0.5, barheight = 10)) ggplotly(plot) %>% layout(annotations = list(x = 1, y = -0.1, text = "Sold values are in log scale", showarrow = F, xref='paper', yref='paper', xanchor='right', yanchor='auto', xshift=-10, yshift=80, font=list(size=15)), xaxis = list(autorange = TRUE), yaxis = list(autorange = TRUE) ) ``` ### Year ```{r} plots_year = plots_sold %>% mutate(days = interval(date, today()) %/% days(1)) %>% filter(days < 365) df_year = st_sf(merge(plots_year, world, by.x = "code", by.y = "iso_a2", all.x = FALSE, all.y = TRUE, returnclass = "sf")) plot = df_year %>% group_by(country, code) %>% summarise(sold = n()) %>% mutate(sold = ifelse(is.na(country), -Inf, sold)) %>% ggplot() + geom_sf(aes(fill = sold))+ scale_fill_gradientn(trans = "log", colors = colorspace::heat_hcl(5, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) + geom_sf_text(aes(label = code), size = 1) + theme(axis.title.x=element_blank(), axis.title.y=element_blank(), legend.title = element_text("Plots Sold")) + labs(caption = "Sold values are in log scale") + guides(fill = guide_colourbar(barwidth = 0.5, barheight = 10)) ggplotly(plot) %>% layout(annotations = list(x = 1, y = -0.1, text = "Sold values are in log scale", showarrow = F, xref='paper', yref='paper', xanchor='right', yanchor='auto', xshift=-10, yshift=80, font=list(size=15)), xaxis = list(autorange = TRUE), yaxis = list(autorange = TRUE) ) ``` ### Total ```{r} plot = df %>% group_by(country, code) %>% summarise(sold = n()) %>% mutate(sold = ifelse(is.na(country), -Inf, sold)) %>% ggplot() + geom_sf(aes(fill = sold))+ scale_fill_gradientn(trans = "log", colors = colorspace::heat_hcl(12, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) + geom_sf_text(aes(label = code), size = 1) + theme(axis.title.x=element_blank(), axis.title.y=element_blank(), legend.title = element_text("Plots Sold")) + labs(caption = "Sold values are in log scale") + guides(fill = guide_colourbar(barwidth = 0.5, barheight = 10)) ggplotly(plot) %>% layout(annotations = list(x = 1, y = -0.1, text = "Sold values are in log scale", showarrow = F, xref='paper', yref='paper', xanchor='right', yanchor='auto', xshift=-10, yshift=80, font=list(size=15)), xaxis = list(autorange = TRUE), yaxis = list(autorange = TRUE) ) ``` US Plots ===================================== Column {data-width=200} ------------------------------------- ### Cumulative US Plot Sales ```{r} us_plots %>% group_by(state) %>% summarize(sold = n()) %>% arrange(-sold) %>% knitr::kable() ``` Column {.tabset} ------------------------------------- ### Day ```{r} us_today = us_plots %>% mutate(days = interval(date, today()) %/% days(1)) %>% filter(days < 1) %>% group_by(state) %>% summarise(sold = n()) us_today = plot_usmap(data = us_today, values = "sold", regions = "states") + theme(legend.position = "right") + # scale_fill_continuous(name = "Plots Sold") + scale_fill_gradientn(name = "Plots Sold", colors = colorspace::heat_hcl(12, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) ggplotly(us_today) ``` ### Week ```{r} us_week = us_plots %>% mutate(days = interval(date, today()) %/% days(1)) %>% filter(days < 7) %>% group_by(state) %>% summarise(sold = n()) us_week = plot_usmap(data = us_week, values = "sold", regions = "states") + theme(legend.position = "right") + scale_fill_gradientn(name = "Plots Sold", colors = colorspace::heat_hcl(12, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) ggplotly(us_week) ``` ### Month ```{r} us_month = us_plots%>% mutate(days = interval(date, today()) %/% days(1)) %>% filter(days < 30) %>% group_by(state) %>% summarise(sold = n()) us_month = plot_usmap(data = us_month, values = "sold", regions = "states") + theme(legend.position = "right") + scale_fill_gradientn(name = "Plots Sold", colors = colorspace::heat_hcl(12, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) ggplotly(us_month) ``` ### Year ```{r} us_year = us_plots%>% mutate(days = interval(date, today()) %/% days(1)) %>% filter(days < 365) %>% group_by(state) %>% summarise(sold = n()) us_year = plot_usmap(data = us_year, values = "sold", regions = "states") + theme(legend.position = "right") + scale_fill_gradientn(name = "Plots Sold", colors = colorspace::heat_hcl(12, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) ggplotly(us_year) ``` ### Total ```{r} us = plot_usmap(data = state_data, values = "sold", regions = "states") + theme(legend.position = "right") + scale_fill_gradientn(name = "Plots Sold", colors = colorspace::heat_hcl(12, h = c(-60, -150), l = c(75, 40), c = c(40, 80), power = 100)) ggplotly(us) ```